package com.rzico.basics.amap.pojo.request;

/**
 * 行政区域查询请求参数实体
 * <p>
 * Created by lam on 2018/8/8.
 */
public class DistrictRequest {

    /**
     * 请求服务权限标识
     */
    private String key;
    /**
     * 查询关键字
     * <p>
     * 规则：只支持单个关键词语搜索关键词支持：行政区名称、citycode、adcode
     * <p>
     * 例如，在subdistrict=2，搜索省份（例如山东），能够显示市（例如济南），区（例如历下区）
     */
    private String keywords;
    /**
     * 子级行政区
     * <p>
     * 规则：设置显示下级行政区级数（行政区级别包括：国家、省/直辖市、市、区/县、乡镇/街道多级数据）
     * <p>
     * 可选值：0、1、2、3等数字，并以此类推
     * <p>
     * 0：不返回下级行政区；
     * <p>
     * 1：返回下一级行政区；
     * <p>
     * 2：返回下两级行政区；
     * <p>
     * 3：返回下三级行政区；
     * <p>
     * <p>
     * <p>
     * 需要在此特殊说明，目前部分城市和省直辖县因为没有区县的概念，故在市级下方直接显示街道。
     * <p>
     * 例如：广东-东莞、海南-文昌市
     */
    private Integer subdistrict = 1;
    /**
     * 需要第几页数据
     * <p>
     * 最外层的districts最多会返回20个数据，若超过限制，请用page请求下一页数据。
     * <p>
     * 例如page=2；page=3。默认page=1
     */
    private Integer page = 1;
    /**
     * 最外层返回数据个数
     */
    private Integer offset = 20;
    /**
     * 返回结果控制
     * <p>
     * 此项控制行政区信息中返回行政区边界坐标点； 可选值：base、all;
     * <p>
     * base:不返回行政区边界坐标点；
     * <p>
     * all:只返回当前查询district的边界值，不返回子节点的边界值；
     * <p>
     * 目前不能返回乡镇/街道级别的边界值
     */
    private String extensions = "base";
    /**
     * 根据区划过滤
     * 按照指定行政区划进行过滤，填入后则只返回该省/直辖市信息
     * <p>
     * 需填入adcode，为了保证数据的正确，强烈建议填入此参数
     */
    private String filter;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getKeywords() {
        return keywords;
    }

    public void setKeywords(String keywords) {
        this.keywords = keywords;
    }

    public Integer getSubdistrict() {
        return subdistrict;
    }

    public void setSubdistrict(Integer subdistrict) {
        this.subdistrict = subdistrict;
    }

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public Integer getOffset() {
        return offset;
    }

    public void setOffset(Integer offset) {
        this.offset = offset;
    }

    public String getExtensions() {
        return extensions;
    }

    public void setExtensions(String extensions) {
        this.extensions = extensions;
    }

    public String getFilter() {
        return filter;
    }

    public void setFilter(String filter) {
        this.filter = filter;
    }

    public String toString() {
        String params = "key=" + this.key;
        if (this.keywords != null) {
            params += "&keywords=" + this.keywords;
        }
        if (this.subdistrict != null) {
            params += "&subdistrict=" + this.subdistrict;
        }
        if (this.page != null) {
            params += "&page=" + this.page;
        }
        if (this.offset != null) {
            params += "&offset=" + this.offset;
        }
        if (this.extensions != null) {
            params += "&extensions=" + this.extensions;
        }
        if (this.filter != null) {
            params += "&filter=" + this.filter;
        }

        return params;
    }
}
